#include<stdio.h>

#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>

//int main()
//{
//	printf("Before :PID is %d\n",getpid());
//	pid_t id=fork();
//	if(id==-1)
//	{
//		printf("fork error!\n");
//		exit(1);
//	}
//	printf("After:PID is%d,return is %d\n",getpid(),id);
//	sleep(1);
//	return 0;
//
//
//}

//#include<string.h>
//int main()
//{
//	for(int i=0;i<150;i++)
//	{
//		printf("%d:%s\n",i,strerror(i));
//	}
//	return 0;
//}


//void show()
//{
//	printf("hello world");
//	exit(1);
//}
//int main()
//{
//	show();
//	return 0;
//}



#include<sys/wait.h>
//int main()
//{
//	pid_t id=fork();
//	if(id==0)
//	{
//		int cnt=5;
//		while(cnt)
//		{
//			printf("Child is running, pid:%d,ppid:%d\n",getpid(),getppid());
//			sleep(1);
//			cnt--;
//		}
//		printf("子进程准备退出，马上变僵尸进程\n");
//		exit(0);
//	}
//	printf("父进程休眠\n");
//	sleep(12);
//	printf("父进程开始回收啦~\n");
//	//father
//	pid_t rid=wait(NULL);
//	if(rid>0)
//	{
//		printf("wait success,rid:%d\n",rid);
//	}
//	printf("父进程回收僵尸成功！\n");
//	sleep(3);
//	return 0;
//}


//int main()
//{
//	pid_t id=fork();
//	if(id==0)
//	{
//	int count=6;
//	while(count--)
//		{
//			printf("i am child PID:%d,PPID:%d\n",getpid(),getppid());
//			sleep(1);
//		}
//		exit(0);
//	}
//	int status=0;
//	pid_t ret=waitpid(id,&status,0);
//	if(ret>=0)
//	{
//		printf("wait child success!!!\n");
//	if(WIFEXITED(status))
//	{
//		printf("exit code:%d\n",WEXITSTATUS(status));
//	}
//	else
//		printf("killed by signal %d\n",status& 0x7F);
//		}
//	sleep(3);
//	return 0;
//}

//int main()
//{
//	pid_t ids[10];
//	for(int i=0;i<10;i++)
//	{
//		pid_t id=fork();
//		if(id==0)
//		{
//			printf("child process created sucessfully.. PID:%d\n",getpid());
//			sleep(3);
//			exit(i);
//		}
//		ids[i]=id;
//	}
//	for(int i=0;i<10;i++)
//	{
//		int status=0;
//		pid_t ret=waitpid(ids[i],&status,0);
//		if(ret>0)
//		{
//			printf("wait child sucess..PID:%d\n",ids[i]);
//			if(WIFEXITED(status))
//			{
//				printf("exit code:%d\n",WEXITSTATUS(status));
//			}
//		}
//		else
//		{
//			printf("killed by signal %d\n",status& 0x7F);
//		}
//
//	}
//	
//
//	return 0;
//}


int main()
{
	setenv("MYVAR","Hello from parent!",1);
	printf("Parent process:MYVAR=%s\n",getenv("MYVAR"));
	pid_t pid=fork();
	if(pid==0)
	{
		printf("Child process: MYVAR=%s\n",getenv("MYVAR"));
		exit(0);
	}
	else
	{
		wait(NULL);
	}
	return 0;
}

